<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>SiteHeaders.java</title>
</head>
<body bgcolor="white">
<pre><tt><font color="#000000">001:</font> <i><font color="#9A1900">// KG-SiteHeaders/SiteHeaders.java</font></i>
<font color="#000000">002:</font>  
<font color="#000000">003:</font> <b><font color="#000080">import</font></b> java<font color="#990000">.</font>net<font color="#990000">.*;</font>
<font color="#000000">004:</font> <b><font color="#000080">import</font></b> java<font color="#990000">.</font>io<font color="#990000">.*;</font>
<font color="#000000">005:</font> <b><font color="#000080">import</font></b> java<font color="#990000">.</font>util<font color="#990000">.*;</font>
<font color="#000000">006:</font> <b><font color="#000080">import</font></b> <b><font color="#0000FF">static</font></b> java<font color="#990000">.</font>lang<font color="#990000">.</font>System<font color="#990000">.</font>out<font color="#990000">;</font>
<font color="#000000">007:</font> 
<font color="#000000">008:</font> <i><font color="#9A1900">/**</font></i>
<font color="#000000">009:</font> <i><font color="#9A1900"> *  Uzycie:</font></i>
<font color="#000000">010:</font> <i><font color="#9A1900"> *                 java SiteHeaders url[,url]...</font></i>
<font color="#000000">011:</font> <i><font color="#9A1900"> *             lub</font></i>
<font color="#000000">012:</font> <i><font color="#9A1900"> *                 java SiteHeaders</font></i>
<font color="#000000">013:</font> <i><font color="#9A1900"> *</font></i>
<font color="#000000">014:</font> <i><font color="#9A1900"> *  Moze troche potrwac...</font></i>
<font color="#000000">015:</font> <i><font color="#9A1900"> *                                   T.R. Werner, Mar 2006</font></i>
<font color="#000000">016:</font> <i><font color="#9A1900"> */</font></i>
<font color="#000000">017:</font> <b><font color="#0000FF">class</font></b> <font color="#009900">SiteHeaders</font> <font color="#FF0000">{</font>
<font color="#000000">018:</font> 
<font color="#000000">019:</font>     <b><font color="#0000FF">public</font></b> <b><font color="#0000FF">static</font></b> <font color="#009900">void</font> <b><font color="#000000">main</font></b><font color="#990000">(</font>String<font color="#990000">[]</font> args<font color="#990000">)</font> <font color="#FF0000">{</font>
<font color="#000000">020:</font>         SiteHeaders sites <font color="#990000">=</font> <b><font color="#0000FF">new</font></b> <b><font color="#000000">SiteHeaders</font></b><font color="#990000">(</font>args<font color="#990000">);</font>
<font color="#000000">021:</font>         sites<font color="#990000">.</font><b><font color="#000000">printHeaders</font></b><font color="#990000">(</font><font color="#FF0000">"Server"</font><font color="#990000">);</font>
<font color="#000000">022:</font>     <font color="#FF0000">}</font>
<font color="#000000">023:</font> 
<font color="#000000">024:</font>     <b><font color="#0000FF">static</font></b> <b><font color="#0000FF">private</font></b> String<font color="#990000">[]</font> defaultDomains <font color="#990000">=</font> <font color="#FF0000">{</font>
<font color="#000000">025:</font>         <font color="#FF0000">"www.google.com"</font><font color="#990000">,</font>      <i><font color="#9A1900">// Google</font></i>
<font color="#000000">026:</font>         <font color="#FF0000">"java.sun.com"</font><font color="#990000">,</font>        <i><font color="#9A1900">// SUN</font></i>
<font color="#000000">027:</font>         <font color="#FF0000">"www.ibm.com"</font><font color="#990000">,</font>         <i><font color="#9A1900">// IBM</font></i>
<font color="#000000">028:</font>         <font color="#FF0000">"www.hp.com"</font><font color="#990000">,</font>          <i><font color="#9A1900">// Hewlett-Packard</font></i>
<font color="#000000">029:</font>         <font color="#FF0000">"www.microsoft.com"</font><font color="#990000">,</font>   <i><font color="#9A1900">// Microsoft</font></i>
<font color="#000000">030:</font>         <font color="#FF0000">"www.snb.ch"</font><font color="#990000">,</font>          <i><font color="#9A1900">// Swiss National Bank</font></i>
<font color="#000000">031:</font>         <font color="#FF0000">"www.db.com"</font><font color="#990000">,</font>          <i><font color="#9A1900">// Deutche Bank</font></i>
<font color="#000000">032:</font>         <font color="#FF0000">"www.lcl.fr"</font><font color="#990000">,</font>          <i><font color="#9A1900">// Credit Lyonnaise</font></i>
<font color="#000000">033:</font>         <font color="#FF0000">"www.pekao.com.pl"</font><font color="#990000">,</font>    <i><font color="#9A1900">// PKO SA</font></i>
<font color="#000000">034:</font>         <font color="#FF0000">"www.pkobp.pl"</font><font color="#990000">,</font>        <i><font color="#9A1900">// PKO BP</font></i>
<font color="#000000">035:</font>         <font color="#FF0000">"www.bgz.pl"</font><font color="#990000">,</font>          <i><font color="#9A1900">// BGZ</font></i>
<font color="#000000">036:</font>         <font color="#FF0000">"www.millenet.pl"</font><font color="#990000">,</font>     <i><font color="#9A1900">// Millenium</font></i>
<font color="#000000">037:</font>         <font color="#FF0000">"www.allegro.pl"</font><font color="#990000">,</font>      <i><font color="#9A1900">// Allegro</font></i>
<font color="#000000">038:</font>         <font color="#FF0000">"www.sejm.gov.pl"</font><font color="#990000">,</font>     <i><font color="#9A1900">// Sejm</font></i>
<font color="#000000">039:</font>         <font color="#FF0000">"www.whitehouse.gov"</font><font color="#990000">,</font>  <i><font color="#9A1900">// Bialy Dom</font></i>
<font color="#000000">040:</font>         <font color="#FF0000">"www.kremlin.ru"</font><font color="#990000">,</font>      <i><font color="#9A1900">// Kreml</font></i>
<font color="#000000">041:</font>         <font color="#FF0000">"www.prezydent.pl"</font><font color="#990000">,</font>    <i><font color="#9A1900">// Kaczynski</font></i>
<font color="#000000">042:</font>         <font color="#FF0000">"www.gazeta.pl"</font><font color="#990000">,</font>       <i><font color="#9A1900">// GW</font></i>
<font color="#000000">043:</font>         <font color="#FF0000">"www.nytimes.com"</font><font color="#990000">,</font>     <i><font color="#9A1900">// NYT</font></i>
<font color="#000000">044:</font>         <font color="#FF0000">"www.playboy.com"</font><font color="#990000">,</font>     <i><font color="#9A1900">// Playboy</font></i>
<font color="#000000">045:</font>         <font color="#FF0000">"www.onet.pl"</font><font color="#990000">,</font>         <i><font color="#9A1900">// Onet</font></i>
<font color="#000000">046:</font>         <font color="#FF0000">"www.wp.pl"</font><font color="#990000">,</font>           <i><font color="#9A1900">// Wirtualna Polska</font></i>
<font color="#000000">047:</font>         <font color="#FF0000">"www.fuw.edu.pl"</font><font color="#990000">,</font>      <i><font color="#9A1900">// Fizyka UW</font></i>
<font color="#000000">048:</font>         <font color="#FF0000">"www.uw.edu.pl"</font><font color="#990000">,</font>       <i><font color="#9A1900">// UW</font></i>
<font color="#000000">049:</font>         <font color="#FF0000">"www.pw.edu.pl"</font><font color="#990000">,</font>       <i><font color="#9A1900">// PW</font></i>
<font color="#000000">050:</font>         <font color="#FF0000">"www.wit.edu.pl"</font><font color="#990000">,</font>      <i><font color="#9A1900">// WIT</font></i>
<font color="#000000">051:</font>         <font color="#FF0000">"www.pjwstk.edu.pl"</font><font color="#990000">,</font>   <i><font color="#9A1900">// poljap</font></i>
<font color="#000000">052:</font>         <font color="#FF0000">"www.youtube.com"</font><font color="#990000">,</font>     <i><font color="#9A1900">// YouTube</font></i>
<font color="#000000">053:</font>         <font color="#FF0000">"www.myspace.com"</font><font color="#990000">,</font>     <i><font color="#9A1900">// MySpace</font></i>
<font color="#000000">054:</font>     <font color="#FF0000">}</font><font color="#990000">;</font>
<font color="#000000">055:</font> 
<font color="#000000">056:</font>     <b><font color="#0000FF">private</font></b> Map<font color="#990000">&lt;</font>String<font color="#990000">,</font>TreeMap<font color="#990000">&lt;</font>String<font color="#990000">,</font>String<font color="#990000">&gt;&gt;</font> map <font color="#990000">=</font>
<font color="#000000">057:</font>         <b><font color="#0000FF">new</font></b> TreeMap<font color="#990000">&lt;</font>String<font color="#990000">,</font>TreeMap<font color="#990000">&lt;</font>String<font color="#990000">,</font>String<font color="#990000">&gt;&gt;();</font>
<font color="#000000">058:</font> 
<font color="#000000">059:</font>     <b><font color="#0000FF">private</font></b> String<font color="#990000">[]</font> _domains<font color="#990000">;</font>
<font color="#000000">060:</font> 
<font color="#000000">061:</font>     <b><font color="#0000FF">public</font></b> <b><font color="#000000">SiteHeaders</font></b><font color="#990000">()</font> <font color="#FF0000">{</font>
<font color="#000000">062:</font>         <b><font color="#0000FF">this</font></b><font color="#990000">(</font>defaultDomains<font color="#990000">);</font>
<font color="#000000">063:</font>     <font color="#FF0000">}</font>
<font color="#000000">064:</font> 
<font color="#000000">065:</font>     <b><font color="#0000FF">public</font></b> <b><font color="#000000">SiteHeaders</font></b><font color="#990000">(</font>String<font color="#990000">[]</font> domains<font color="#990000">)</font> <font color="#FF0000">{</font>
<font color="#000000">066:</font>         <b><font color="#0000FF">if</font></b> <font color="#990000">(</font>domains <font color="#990000">==</font> <b><font color="#0000FF">null</font></b> <font color="#990000">||</font> domains<font color="#990000">.</font>length <font color="#990000">==</font> <font color="#993399">0</font><font color="#990000">)</font>
<font color="#000000">067:</font>             _domains <font color="#990000">=</font> defaultDomains<font color="#990000">;</font>
<font color="#000000">068:</font>         <b><font color="#0000FF">else</font></b>
<font color="#000000">069:</font>             _domains <font color="#990000">=</font> domains<font color="#990000">;</font>
<font color="#000000">070:</font>         <b><font color="#000000">initMap</font></b><font color="#990000">();</font>
<font color="#000000">071:</font>     <font color="#FF0000">}</font>
<font color="#000000">072:</font> 
<font color="#000000">073:</font>     <b><font color="#0000FF">public</font></b> <font color="#009900">void</font> <b><font color="#000000">printHeaders</font></b><font color="#990000">(</font>String header<font color="#990000">)</font> <font color="#FF0000">{</font>
<font color="#000000">074:</font>         out<font color="#990000">.</font><b><font color="#000000">println</font></b><font color="#990000">(</font><font color="#FF0000">"</font><font color="#CC33CC">\n</font><font color="#FF0000">Szukanie naglowka "</font> <font color="#990000">+</font>
<font color="#000000">075:</font>                             <font color="#FF0000">"</font><font color="#CC33CC">\"</font><font color="#FF0000">"</font> <font color="#990000">+</font> header <font color="#990000">+</font> <font color="#FF0000">"</font><font color="#CC33CC">\"\n</font><font color="#FF0000">"</font><font color="#990000">);</font>
<font color="#000000">076:</font>         <b><font color="#0000FF">for</font></b> <font color="#990000">(</font>String address <font color="#990000">:</font> map<font color="#990000">.</font><b><font color="#000000">keySet</font></b><font color="#990000">())</font> <font color="#FF0000">{</font>
<font color="#000000">077:</font>             String h <font color="#990000">=</font> map<font color="#990000">.</font><b><font color="#000000">get</font></b><font color="#990000">(</font>address<font color="#990000">).</font><b><font color="#000000">get</font></b><font color="#990000">(</font>header<font color="#990000">);</font>
<font color="#000000">078:</font>             <b><font color="#0000FF">if</font></b> <font color="#990000">(</font>h <font color="#990000">==</font> <b><font color="#0000FF">null</font></b><font color="#990000">)</font> h <font color="#990000">=</font> <font color="#FF0000">"unknown"</font><font color="#990000">;</font>
<font color="#000000">079:</font>             out<font color="#990000">.</font><b><font color="#000000">printf</font></b><font color="#990000">(</font><font color="#FF0000">"%25s: %-40s</font><font color="#CC33CC">\n</font><font color="#FF0000">"</font><font color="#990000">,</font>address<font color="#990000">,</font>h<font color="#990000">);</font>
<font color="#000000">080:</font>         <font color="#FF0000">}</font>
<font color="#000000">081:</font>     <font color="#FF0000">}</font>
<font color="#000000">082:</font> 
<font color="#000000">083:</font>     <b><font color="#0000FF">private</font></b> <font color="#009900">void</font> <b><font color="#000000">initMap</font></b><font color="#990000">()</font> <font color="#FF0000">{</font>
<font color="#000000">084:</font>         <b><font color="#0000FF">for</font></b> <font color="#990000">(</font>String address <font color="#990000">:</font> _domains<font color="#990000">)</font> <font color="#FF0000">{</font>
<font color="#000000">085:</font>             address <font color="#990000">=</font> <b><font color="#000000">normalize</font></b><font color="#990000">(</font>address<font color="#990000">);</font>
<font color="#000000">086:</font>             URL url <font color="#990000">=</font> <b><font color="#0000FF">null</font></b><font color="#990000">;</font>
<font color="#000000">087:</font>             <b><font color="#0000FF">try</font></b> <font color="#FF0000">{</font>
<font color="#000000">088:</font>                 url <font color="#990000">=</font> <b><font color="#0000FF">new</font></b> <b><font color="#000000">URL</font></b><font color="#990000">(</font><font color="#FF0000">"http://"</font> <font color="#990000">+</font> address<font color="#990000">);</font>
<font color="#000000">089:</font>             <font color="#FF0000">}</font> <b><font color="#0000FF">catch</font></b><font color="#990000">(</font>MalformedURLException skip_it<font color="#990000">)</font> <font color="#FF0000">{</font>
<font color="#000000">090:</font>             <font color="#FF0000">}</font>
<font color="#000000">091:</font> 
<font color="#000000">092:</font>             <b><font color="#0000FF">try</font></b> <font color="#FF0000">{</font>
<font color="#000000">093:</font>                 out<font color="#990000">.</font><b><font color="#000000">print</font></b><font color="#990000">(</font><font color="#FF0000">"Laczenie z "</font> <font color="#990000">+</font> address <font color="#990000">+</font> <font color="#FF0000">"... "</font><font color="#990000">);</font>
<font color="#000000">094:</font>                 URLConnection conn <font color="#990000">=</font> url<font color="#990000">.</font><b><font color="#000000">openConnection</font></b><font color="#990000">();</font>
<font color="#000000">095:</font> 
<font color="#000000">096:</font>                 TreeMap<font color="#990000">&lt;</font>String<font color="#990000">,</font>String<font color="#990000">&gt;</font> m <font color="#990000">=</font>
<font color="#000000">097:</font>                     <b><font color="#0000FF">new</font></b> TreeMap<font color="#990000">&lt;</font>String<font color="#990000">,</font>String<font color="#990000">&gt;();</font>
<font color="#000000">098:</font>                 <b><font color="#0000FF">for</font></b> <font color="#990000">(</font><font color="#009900">int</font> i <font color="#990000">=</font> <font color="#993399">1</font><font color="#990000">;</font> <font color="#990000">;</font> <font color="#990000">++</font>i<font color="#990000">)</font> <font color="#FF0000">{</font>
<font color="#000000">099:</font>                     String h <font color="#990000">=</font> conn<font color="#990000">.</font><b><font color="#000000">getHeaderField</font></b><font color="#990000">(</font>i<font color="#990000">);</font>
<font color="#000000">100:</font>                     <b><font color="#0000FF">if</font></b> <font color="#990000">(</font>h <font color="#990000">==</font> <b><font color="#0000FF">null</font></b><font color="#990000">)</font> <b><font color="#0000FF">break</font></b><font color="#990000">;</font>
<font color="#000000">101:</font>                     m<font color="#990000">.</font><b><font color="#000000">put</font></b><font color="#990000">(</font>conn<font color="#990000">.</font><b><font color="#000000">getHeaderFieldKey</font></b><font color="#990000">(</font>i<font color="#990000">),</font>h<font color="#990000">);</font>
<font color="#000000">102:</font>                 <font color="#FF0000">}</font>
<font color="#000000">103:</font>                 <b><font color="#0000FF">if</font></b> <font color="#990000">(</font>m<font color="#990000">.</font><b><font color="#000000">size</font></b><font color="#990000">()</font> <font color="#990000">&gt;</font> <font color="#993399">0</font><font color="#990000">)</font> <font color="#FF0000">{</font>
<font color="#000000">104:</font>                     out<font color="#990000">.</font><b><font color="#000000">println</font></b><font color="#990000">(</font><font color="#FF0000">"OK."</font><font color="#990000">);</font>
<font color="#000000">105:</font>                     map<font color="#990000">.</font><b><font color="#000000">put</font></b><font color="#990000">(</font>address<font color="#990000">,</font>m<font color="#990000">);</font>
<font color="#000000">106:</font>                 <font color="#FF0000">}</font> <b><font color="#0000FF">else</font></b> <font color="#FF0000">{</font>
<font color="#000000">107:</font>                     out<font color="#990000">.</font><b><font color="#000000">println</font></b><font color="#990000">(</font><font color="#FF0000">"no headers returned"</font><font color="#990000">);</font>
<font color="#000000">108:</font>                 <font color="#FF0000">}</font>
<font color="#000000">109:</font>             <font color="#FF0000">}</font> <b><font color="#0000FF">catch</font></b><font color="#990000">(</font>IOException e<font color="#990000">)</font> <font color="#FF0000">{</font>
<font color="#000000">110:</font>                 out<font color="#990000">.</font><b><font color="#000000">println</font></b><font color="#990000">(</font><font color="#FF0000">"failed."</font><font color="#990000">);</font>
<font color="#000000">111:</font>                 <b><font color="#0000FF">continue</font></b><font color="#990000">;</font>
<font color="#000000">112:</font>             <font color="#FF0000">}</font>
<font color="#000000">113:</font>         <font color="#FF0000">}</font>
<font color="#000000">114:</font>     <font color="#FF0000">}</font>
<font color="#000000">115:</font> 
<font color="#000000">116:</font>     <b><font color="#0000FF">private</font></b> String <b><font color="#000000">normalize</font></b><font color="#990000">(</font>String address<font color="#990000">)</font> <font color="#FF0000">{</font>
<font color="#000000">117:</font>          <b><font color="#0000FF">return</font></b> address<font color="#990000">.</font><b><font color="#000000">startsWith</font></b><font color="#990000">(</font><font color="#FF0000">"http://"</font><font color="#990000">)</font>  <font color="#990000">?</font>
<font color="#000000">118:</font>                 address<font color="#990000">.</font><b><font color="#000000">substring</font></b><font color="#990000">(</font><font color="#993399">7</font><font color="#990000">)</font> <font color="#990000">:</font> address<font color="#990000">;</font>
<font color="#000000">119:</font>     <font color="#FF0000">}</font>
<font color="#000000">120:</font> <font color="#FF0000">}</font>
<font color="#000000">121:</font> </tt></pre>
</body>
</html>
